var str:string="123"

var obj:object
obj={
    num:123
}
var bool:boolean=true

var num:number=123
// num='aaa' 报错 不能将类型“string”分配给类型“number”


// 数组
let arr1:number[]=[1,2,3]

let arr2:Array<string> = ['a','b','c']


let null1:null=null


// 不能将类型“[number, string, number]”分配给类型“[number, string]”。
// 源具有 3 个元素，但目标仅允许 2 个。
// let tuple:[number,string]=[1,'a',2]
let tuple:[number,string]=[1,'a']

tuple.push(2)

// console.log(tuple[2])   报错


// ts要求给函数参数提供类型值，返回值一般不需要提供类型值，ts会自动使用推导出返回值类型。
let add =(x:number,y:number):number=>{
    return x+y
}

// let obj1:object ={
//     a:1,
//     b:2
// }
// obj1.a=3   //这样写不允许修改对象的变量值 obj.a = 3 

let obj1:{a:number,b:number} ={
    a:1,
    b:2
}
obj1.a=3

// let s1:symbol = Symbol();
// let s2:symbol = Symbol()  
// console.log(s1==s2)


enum Role { Reporter, //0
     Developer, //1 
     Main, //2 
     Owner, //3 
     Guest, //4
     } 
console.log(Role)
//   { '0':'Reporter',
//     '1':'Developer',
//     '2':'Main',
//     '3':'Owner',
//     '4':'Guest',
//   }